package com.docmgmt.mvp.dto;

import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

/**
 * 文件列表视图对象
 */
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class FileVO {

    /**
     * 文件ID
     */
    private Long id;

    /**
     * 文件名
     */
    private String name;

    /**
     * 所属文件夹ID
     */
    @JsonProperty("folderId")
    private Long folderId;

    /**
     * 文件夹路径
     */
    @JsonProperty("folderPath")
    private String folderPath;

    /**
     * 文件大小（字节）
     */
    private Long size;

    /**
     * 文件大小（格式化显示，如 "2.0 MB"）
     */
    @JsonProperty("sizeDisplay")
    private String sizeDisplay;

    /**
     * 文件扩展名
     */
    private String extension;

    /**
     * MIME类型
     */
    @JsonProperty("mimeType")
    private String mimeType;

    /**
     * 版本号
     */
    private Integer version;

    /**
     * 是否支持预览
     */
    @JsonProperty("hasPreview")
    private Boolean hasPreview;

    /**
     * 预览URL
     */
    @JsonProperty("previewUrl")
    private String previewUrl;

    /**
     * 下载URL
     */
    @JsonProperty("downloadUrl")
    private String downloadUrl;

    /**
     * 上传人ID
     */
    @JsonProperty("uploadedBy")
    private Long uploadedBy;

    /**
     * 上传人姓名
     */
    @JsonProperty("uploadedByName")
    private String uploadedByName;

    /**
     * 创建时间
     */
    @JsonProperty("createdAt")
    private String createdAt;

    /**
     * 更新时间
     */
    @JsonProperty("updatedAt")
    private String updatedAt;

    /**
     * 查看次数
     */
    @JsonProperty("viewCount")
    private Integer viewCount;

    /**
     * 下载次数
     */
    @JsonProperty("downloadCount")
    private Integer downloadCount;

    /**
     * 是否锁定
     */
    @JsonProperty("isLocked")
    private Boolean isLocked;

    /**
     * 存储键（MinIO路径）
     */
    @JsonProperty("storageKey")
    private String storageKey;
}
